package py.fpuna.ii.electiva2.client;


import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.user.client.ui.DecoratedTabPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

import com.google.gwt.user.datepicker.client.DatePicker;
import com.gwtext.client.core.Margins;
import com.gwtext.client.core.RegionPosition;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.Viewport;
import com.gwtext.client.widgets.layout.BorderLayout;
import com.gwtext.client.widgets.layout.BorderLayoutData;
import com.gwtext.client.widgets.layout.FitLayout;

import java.util.Date;
import py.fpuna.ii.electiva2.client.clases.ABMClientes;
import py.fpuna.ii.electiva2.client.clases.ABMCompras;
import py.fpuna.ii.electiva2.client.clases.ABMProveedores;
import py.fpuna.ii.electiva2.client.clases.ABMProductos;
import py.fpuna.ii.electiva2.client.clases.ABMVentas;

/**
 * Main entry point.
 *
 * @author 
 */
public class mainEntryPoint implements EntryPoint {

    HorizontalPanel hpanel = new HorizontalPanel();
    DecoratedTabPanel tabPanel = new DecoratedTabPanel();
    SimplePanel todo = new SimplePanel();

    VerticalPanel accionesClientes = new VerticalPanel();
    VerticalPanel accionesProv = new VerticalPanel();
    VerticalPanel accionesProductos = new VerticalPanel();
    VerticalPanel accionesVentas = new VerticalPanel();
    VerticalPanel accionesCompras = new VerticalPanel();

    ABMClientes abmCli = null;
    ABMProveedores abmProv = null;
    ABMProductos abmProd = null;
    ABMVentas abmVen = null;
    ABMCompras abmCom = null;

    /** Creates a new instance of tareaEntryPoint */
    public mainEntryPoint() {
    }

    /**
     * The entry point method, called automatically by loading a module
     * that declares an implementing class as an entry-point
     */
    public void onModuleLoad() {

        Panel panel = new Panel();
        panel.setBorder(false);
        panel.setPaddings(15);
        panel.setLayout(new FitLayout());

        Panel borderPanel = new Panel();
        borderPanel.setLayout(new BorderLayout());

         //panel norte
        Panel northPanel = new Panel();
        northPanel.setHtml("<p><b>Sistema de Control de Stock</p>");
        northPanel.setHeight(32);
        northPanel.setBodyStyle("background-color:#FFFF88");
        borderPanel.add(northPanel, new BorderLayoutData(RegionPosition.NORTH));

        //panel sur
         Panel southPanel = new Panel();
         southPanel.setHtml("<p>salamitos.com :)</p>");
         southPanel.setHeight(100);
         southPanel.setBodyStyle("background-color:#CDEB8B");
         southPanel.setCollapsible(true);
         southPanel.setTitle("Copyrigth");

         BorderLayoutData southData = new BorderLayoutData(RegionPosition.SOUTH);
         southData.setMinSize(100);
         southData.setMaxSize(200);
         southData.setMargins(new Margins(0, 0, 0, 0));
         southData.setSplit(true);
         borderPanel.add(southPanel, southData);

         //panel este -  donde sale el sol
         Panel eastPanel = new Panel();
         //eastPanel.setHtml("<p>Fecha - Calendario</p>");
         eastPanel.setTitle("HOY...");
         eastPanel.setCollapsible(true);
         eastPanel.setWidth(180);

         VerticalPanel lateral = new VerticalPanel();
         lateral.setSpacing(15);

         DatePicker datePicker = new DatePicker();
         datePicker.setValue(new Date(101));
         
         lateral.add(datePicker);

         eastPanel.add(lateral);

         BorderLayoutData eastData = new BorderLayoutData(RegionPosition.EAST);
         eastData.setSplit(true);
         eastData.setMinSize(175);
         eastData.setMaxSize(400);
         eastData.setMargins(new Margins(0, 0, 5, 0));

         borderPanel.add(eastPanel, eastData);

         //Panel Oeste
         Panel westPanel = new Panel();
         westPanel.setHtml("<p>SCS</p>");
         westPanel.setTitle("Home");
         westPanel.setBodyStyle("background-color:EEEEEE");
         westPanel.setCollapsible(true);
         westPanel.setWidth(180);


//         final Image image = new Image();
//         image.setUrl("http://www.google.com/images/logo.gif");
//         Panel panelImagen = new Panel();
//         panelImagen.add(image);
//         westPanel.add(panelImagen);
         BorderLayoutData westData = new BorderLayoutData(RegionPosition.WEST);
         westData.setSplit(true);
         westData.setMinSize(175);
         westData.setMaxSize(400);
         westData.setMargins(new Margins(0, 5, 0, 0));

         borderPanel.add(westPanel, westData);

         //Panel Central
         Panel centerPanel = new Panel();
         centerPanel.setHtml("<p>Operaciones SCS</p>");
         centerPanel.setBodyStyle("background-color:#C3D9FF");

         
       // tabPanel.setWidth("400px");
        tabPanel.add(crearAccionesClientes(), "Clientes", true);
        tabPanel.add(crearAccionesProveedores(), "Proveedores",true);
        tabPanel.add(crearAccionesProductos(), "Productos",true);
        tabPanel.add(crearAccionesVentas(), "Ventas",true);
        tabPanel.add(crearAccionesCompras(), "Compras", true);
        tabPanel.addSelectionHandler(new SelectionHandler<Integer>(){

            public void onSelection(SelectionEvent<Integer> event) {
                Integer elegido = event.getSelectedItem();

                if (elegido == 0){
                    accionesClientes.remove(abmCli);
                    abmCli = new ABMClientes();   //muestra la tabla actual
                    accionesClientes.add(abmCli);
                }else if (elegido == 1){
                    accionesProv.remove(abmProv);
                    abmProv = new ABMProveedores();
                    accionesProv.add(abmProv);
                }else if (elegido == 2){
                    accionesProductos.remove(abmProd);
                    abmProd = new ABMProductos();
                    accionesProductos.add(abmProd);
                }else if (elegido == 3){
                    accionesVentas.remove(abmVen);
                    abmVen = new ABMVentas();
                    accionesVentas.add(abmVen);
                }else if (elegido  == 4){
                    accionesCompras.remove(abmCom);
                    abmCom = new ABMCompras();
                    accionesCompras.add(abmCom);
                }
                
            }
        });
     
        hpanel.setSpacing(50);
        hpanel.add(tabPanel);

        centerPanel.add(hpanel);
        centerPanel.setAutoScroll(true); //para que muestre con scroll
        borderPanel.add(centerPanel, new BorderLayoutData(RegionPosition.CENTER));
        panel.add(borderPanel);

        Viewport viewport = new Viewport(panel);

    }

  
    public Widget crearAccionesClientes(){
        
        accionesClientes.setWidth("1000px");
        accionesClientes.setSpacing(30);
        abmCli = new ABMClientes();   //muestra la tabla actual
        accionesClientes.add(abmCli);

        return accionesClientes;
    }

    public Widget crearAccionesProveedores()  {

        accionesProv.setWidth("1000px");
        accionesProv.setSpacing(30);        
        abmProv = new ABMProveedores();
        accionesProv.add(abmProv);

        return accionesProv;
    }

    public Widget crearAccionesProductos()  {

        accionesProductos.setWidth("1000px");
        accionesProductos.setSpacing(30);
        abmProd = new ABMProductos();   //ABMProductos maneja los productos
        accionesProductos.add(abmProd);

        return accionesProductos;
    }

    public Widget crearAccionesVentas()  {

        accionesVentas.setWidth("1000px");
        accionesVentas.setSpacing(30);
        abmVen = new ABMVentas();   //ABMVentas maneja la vista
        accionesVentas.add(abmVen);

        return accionesVentas;
    }


    public Widget crearAccionesCompras(){

        accionesCompras.setWidth("1000px");
        accionesCompras.setSpacing(30);
        abmCom = new ABMCompras();   //muestra la tabla actual
        accionesCompras.add(abmCom);

        return accionesCompras;
    }

}